前几天在写小猪比机器人,写一个新功能是网页上让机器人发送消息。我的实现原理是这样的:
输入要发的消息内容 => js储存cookie => PHP indexcontroller读取cookie => file_get_contents请求发送消息的API(发送消息的API是使用Python flask做的)
但是当我尝试发送中文消息的时候却变成了乱码,英文消息正常。
我推测可能是以下几个步骤出现了问题:读取cookie
、file_get_contents请求
、flask获取get参数
在我查看flask控制台输出后,初步排除了flask获取get参数出现问题的可能性。我又加了输出和编码格式输出,发现读取出的cookie也是正常的utf-8
。所以bug就在file_get_contents请求
这里。
我又先后试了curl等多种请求,结果也是一样。苦苦思索,突然想起来了在地址栏输入中文,会被encode成%XX%XX
的格式。Google了一番,果然PHP有两个函数分别是urlencode
与urldecode
。前者可以将汉字转换为%XX%XX
,后者相反。
使用urlencode
再进行file_get_contents
请求,发现可以正常发送中文消息了。